info <- read.csv("../data/train_set/label.csv")
load("../output/fiducial_pt_list.Rdata")
library(readxl)
# A function to plot histogram of distribution of pairwise distance for each emotion
# input: emotion index, first point, second point, vertical or horizontal distance
# output: histogram of distance distribution
dist_histogram_by_emotion <- function(emotion_idx, pt1, pt2, vertical = T){
    indices <- info[info$emotion_idx == emotion_idx, 'Index']
    emotion <- as.character(info[info$emotion_idx == emotion_idx, 'emotion_cat'])[1]
    ver.dist <- function(idx){
        if(vertical){
        ver.loc <- fiducial_pt_list[[idx]][,2]
        }
        else{
        ver.loc <- fiducial_pt_list[[idx]][,1] 
        }
        pairwise_dist <- as.matrix(dist(ver.loc))
        ver.dist <- pairwise_dist[pt1,pt2]
    return(ver.dist)
}
    dist_distribution <- sapply(indices, ver.dist)
    #jpeg(paste(c('../output/hist', emotion_idx,"_", pt1, "_", pt2, '.jpg'), collapse = ''),
    #width = 500, height = 375)
    hist(dist_distribution, xlab = "distance", 
         main = paste(c(emotion, "distance between", pt1, "and", pt2),collapse = " ")) 
    abline(v = mean(dist_distribution))
    #dev.off()
}

# A function to generalize "dist_histogram_by_emotion" to all emotions 
dist_histogram <- function(pt1, pt2, vertical = T){
  lapply(1:22, dist_histogram_by_emotion, pt1, pt2, vertical)
}

#examples
dist_histogram(50,52)

[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
NULL

[[6]]
NULL

[[7]]
NULL

[[8]]
NULL

[[9]]
NULL

[[10]]
NULL

[[11]]
NULL

[[12]]
NULL

[[13]]
NULL

[[14]]
NULL

[[15]]
NULL

[[16]]
NULL

[[17]]
NULL

[[18]]
NULL

[[19]]
NULL

[[20]]
NULL

[[21]]
NULL

[[22]]
NULL

dist_histogram(1,21)

[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
NULL

[[6]]
NULL

[[7]]
NULL

[[8]]
NULL

[[9]]
NULL

[[10]]
NULL

[[11]]
NULL

[[12]]
NULL

[[13]]
NULL

[[14]]
NULL

[[15]]
NULL

[[16]]
NULL

[[17]]
NULL

[[18]]
NULL

[[19]]
NULL

[[20]]
NULL

[[21]]
NULL

[[22]]
NULL

library(EBImage)
# a function display fiducial points on images
# input: identity index
# output: all images associated with the identity with fiducial points marked
display_fid_pt <- function(identity){
    indices <- info[info$identity == identity, 'Index']
    emotions <- as.character(info[info$identity == identity, 'emotion_cat'])
    image.path_sub <- paste0(train_image_dir, sprintf("%04d", indices), ".jpg")
    Image_list_sub <- lapply(image.path_sub, EBImage::readImage)
    fiducial_pt_list_sub <- fiducial_pt_list[indices]

    display_single <- function(j){
        #jpeg(paste(c('../output/', identity,'_', j, '.jpg'), collapse = ''), width = 500, height = 375)
        display(Image(Image_list_sub[[j]], colormode = 'Color'), method="raster")
        text(x = 170, y = 50, label = emotions[j], cex = 1.5)
        add_point <- function(n){text(x = fiducial_pt_list_sub[[j]][n,1],
                                      y = fiducial_pt_list_sub[[j]][n,2],
                                      label = as.character(n), col = "white", cex = 0.8)}
        lapply(1:78,add_point)
        #dev.off() 
}

    lapply(1:length(indices), display_single) 
}

display_fid_pt(110)

[[1]]
[[1]][[1]]
NULL

[[1]][[2]]
NULL

[[1]][[3]]
NULL

[[1]][[4]]
NULL

[[1]][[5]]
NULL

[[1]][[6]]
NULL

[[1]][[7]]
NULL

[[1]][[8]]
NULL

[[1]][[9]]
NULL

[[1]][[10]]
NULL

[[1]][[11]]
NULL

[[1]][[12]]
NULL

[[1]][[13]]
NULL

[[1]][[14]]
NULL

[[1]][[15]]
NULL

[[1]][[16]]
NULL

[[1]][[17]]
NULL

[[1]][[18]]
NULL

[[1]][[19]]
NULL

[[1]][[20]]
NULL

[[1]][[21]]
NULL

[[1]][[22]]
NULL

[[1]][[23]]
NULL

[[1]][[24]]
NULL

[[1]][[25]]
NULL

[[1]][[26]]
NULL

[[1]][[27]]
NULL

[[1]][[28]]
NULL

[[1]][[29]]
NULL

[[1]][[30]]
NULL

[[1]][[31]]
NULL

[[1]][[32]]
NULL

[[1]][[33]]
NULL

[[1]][[34]]
NULL

[[1]][[35]]
NULL

[[1]][[36]]
NULL

[[1]][[37]]
NULL

[[1]][[38]]
NULL

[[1]][[39]]
NULL

[[1]][[40]]
NULL

[[1]][[41]]
NULL

[[1]][[42]]
NULL

[[1]][[43]]
NULL

[[1]][[44]]
NULL

[[1]][[45]]
NULL

[[1]][[46]]
NULL

[[1]][[47]]
NULL

[[1]][[48]]
NULL

[[1]][[49]]
NULL

[[1]][[50]]
NULL

[[1]][[51]]
NULL

[[1]][[52]]
NULL

[[1]][[53]]
NULL

[[1]][[54]]
NULL

[[1]][[55]]
NULL

[[1]][[56]]
NULL

[[1]][[57]]
NULL

[[1]][[58]]
NULL

[[1]][[59]]
NULL

[[1]][[60]]
NULL

[[1]][[61]]
NULL

[[1]][[62]]
NULL

[[1]][[63]]
NULL

[[1]][[64]]
NULL

[[1]][[65]]
NULL

[[1]][[66]]
NULL

[[1]][[67]]
NULL

[[1]][[68]]
NULL

[[1]][[69]]
NULL

[[1]][[70]]
NULL

[[1]][[71]]
NULL

[[1]][[72]]
NULL

[[1]][[73]]
NULL

[[1]][[74]]
NULL

[[1]][[75]]
NULL

[[1]][[76]]
NULL

[[1]][[77]]
NULL

[[1]][[78]]
NULL


[[2]]
[[2]][[1]]
NULL

[[2]][[2]]
NULL

[[2]][[3]]
NULL

[[2]][[4]]
NULL

[[2]][[5]]
NULL

[[2]][[6]]
NULL

[[2]][[7]]
NULL

[[2]][[8]]
NULL

[[2]][[9]]
NULL

[[2]][[10]]
NULL

[[2]][[11]]
NULL

[[2]][[12]]
NULL

[[2]][[13]]
NULL

[[2]][[14]]
NULL

[[2]][[15]]
NULL

[[2]][[16]]
NULL

[[2]][[17]]
NULL

[[2]][[18]]
NULL

[[2]][[19]]
NULL

[[2]][[20]]
NULL

[[2]][[21]]
NULL

[[2]][[22]]
NULL

[[2]][[23]]
NULL

[[2]][[24]]
NULL

[[2]][[25]]
NULL

[[2]][[26]]
NULL

[[2]][[27]]
NULL

[[2]][[28]]
NULL

[[2]][[29]]
NULL

[[2]][[30]]
NULL

[[2]][[31]]
NULL

[[2]][[32]]
NULL

[[2]][[33]]
NULL

[[2]][[34]]
NULL

[[2]][[35]]
NULL

[[2]][[36]]
NULL

[[2]][[37]]
NULL

[[2]][[38]]
NULL

[[2]][[39]]
NULL

[[2]][[40]]
NULL

[[2]][[41]]
NULL

[[2]][[42]]
NULL

[[2]][[43]]
NULL

[[2]][[44]]
NULL

[[2]][[45]]
NULL

[[2]][[46]]
NULL

[[2]][[47]]
NULL

[[2]][[48]]
NULL

[[2]][[49]]
NULL

[[2]][[50]]
NULL

[[2]][[51]]
NULL

[[2]][[52]]
NULL

[[2]][[53]]
NULL

[[2]][[54]]
NULL

[[2]][[55]]
NULL

[[2]][[56]]
NULL

[[2]][[57]]
NULL

[[2]][[58]]
NULL

[[2]][[59]]
NULL

[[2]][[60]]
NULL

[[2]][[61]]
NULL

[[2]][[62]]
NULL

[[2]][[63]]
NULL

[[2]][[64]]
NULL

[[2]][[65]]
NULL

[[2]][[66]]
NULL

[[2]][[67]]
NULL

[[2]][[68]]
NULL

[[2]][[69]]
NULL

[[2]][[70]]
NULL

[[2]][[71]]
NULL

[[2]][[72]]
NULL

[[2]][[73]]
NULL

[[2]][[74]]
NULL

[[2]][[75]]
NULL

[[2]][[76]]
NULL

[[2]][[77]]
NULL

[[2]][[78]]
NULL


[[3]]
[[3]][[1]]
NULL

[[3]][[2]]
NULL

[[3]][[3]]
NULL

[[3]][[4]]
NULL

[[3]][[5]]
NULL

[[3]][[6]]
NULL

[[3]][[7]]
NULL

[[3]][[8]]
NULL

[[3]][[9]]
NULL

[[3]][[10]]
NULL

[[3]][[11]]
NULL

[[3]][[12]]
NULL

[[3]][[13]]
NULL

[[3]][[14]]
NULL

[[3]][[15]]
NULL

[[3]][[16]]
NULL

[[3]][[17]]
NULL

[[3]][[18]]
NULL

[[3]][[19]]
NULL

[[3]][[20]]
NULL

[[3]][[21]]
NULL

[[3]][[22]]
NULL

[[3]][[23]]
NULL

[[3]][[24]]
NULL

[[3]][[25]]
NULL

[[3]][[26]]
NULL

[[3]][[27]]
NULL

[[3]][[28]]
NULL

[[3]][[29]]
NULL

[[3]][[30]]
NULL

[[3]][[31]]
NULL

[[3]][[32]]
NULL

[[3]][[33]]
NULL

[[3]][[34]]
NULL

[[3]][[35]]
NULL

[[3]][[36]]
NULL

[[3]][[37]]
NULL

[[3]][[38]]
NULL

[[3]][[39]]
NULL

[[3]][[40]]
NULL

[[3]][[41]]
NULL

[[3]][[42]]
NULL

[[3]][[43]]
NULL

[[3]][[44]]
NULL

[[3]][[45]]
NULL

[[3]][[46]]
NULL

[[3]][[47]]
NULL

[[3]][[48]]
NULL

[[3]][[49]]
NULL

[[3]][[50]]
NULL

[[3]][[51]]
NULL

[[3]][[52]]
NULL

[[3]][[53]]
NULL

[[3]][[54]]
NULL

[[3]][[55]]
NULL

[[3]][[56]]
NULL

[[3]][[57]]
NULL

[[3]][[58]]
NULL

[[3]][[59]]
NULL

[[3]][[60]]
NULL

[[3]][[61]]
NULL

[[3]][[62]]
NULL

[[3]][[63]]
NULL

[[3]][[64]]
NULL

[[3]][[65]]
NULL

[[3]][[66]]
NULL

[[3]][[67]]
NULL

[[3]][[68]]
NULL

[[3]][[69]]
NULL

[[3]][[70]]
NULL

[[3]][[71]]
NULL

[[3]][[72]]
NULL

[[3]][[73]]
NULL

[[3]][[74]]
NULL

[[3]][[75]]
NULL

[[3]][[76]]
NULL

[[3]][[77]]
NULL

[[3]][[78]]
NULL


[[4]]
[[4]][[1]]
NULL

[[4]][[2]]
NULL

[[4]][[3]]
NULL

[[4]][[4]]
NULL

[[4]][[5]]
NULL

[[4]][[6]]
NULL

[[4]][[7]]
NULL

[[4]][[8]]
NULL

[[4]][[9]]
NULL

[[4]][[10]]
NULL

[[4]][[11]]
NULL

[[4]][[12]]
NULL

[[4]][[13]]
NULL

[[4]][[14]]
NULL

[[4]][[15]]
NULL

[[4]][[16]]
NULL

[[4]][[17]]
NULL

[[4]][[18]]
NULL

[[4]][[19]]
NULL

[[4]][[20]]
NULL

[[4]][[21]]
NULL

[[4]][[22]]
NULL

[[4]][[23]]
NULL

[[4]][[24]]
NULL

[[4]][[25]]
NULL

[[4]][[26]]
NULL

[[4]][[27]]
NULL

[[4]][[28]]
NULL

[[4]][[29]]
NULL

[[4]][[30]]
NULL

[[4]][[31]]
NULL

[[4]][[32]]
NULL

[[4]][[33]]
NULL

[[4]][[34]]
NULL

[[4]][[35]]
NULL

[[4]][[36]]
NULL

[[4]][[37]]
NULL

[[4]][[38]]
NULL

[[4]][[39]]
NULL

[[4]][[40]]
NULL

[[4]][[41]]
NULL

[[4]][[42]]
NULL

[[4]][[43]]
NULL

[[4]][[44]]
NULL

[[4]][[45]]
NULL

[[4]][[46]]
NULL

[[4]][[47]]
NULL

[[4]][[48]]
NULL

[[4]][[49]]
NULL

[[4]][[50]]
NULL

[[4]][[51]]
NULL

[[4]][[52]]
NULL

[[4]][[53]]
NULL

[[4]][[54]]
NULL

[[4]][[55]]
NULL

[[4]][[56]]
NULL

[[4]][[57]]
NULL

[[4]][[58]]
NULL

[[4]][[59]]
NULL

[[4]][[60]]
NULL

[[4]][[61]]
NULL

[[4]][[62]]
NULL

[[4]][[63]]
NULL

[[4]][[64]]
NULL

[[4]][[65]]
NULL

[[4]][[66]]
NULL

[[4]][[67]]
NULL

[[4]][[68]]
NULL

[[4]][[69]]
NULL

[[4]][[70]]
NULL

[[4]][[71]]
NULL

[[4]][[72]]
NULL

[[4]][[73]]
NULL

[[4]][[74]]
NULL

[[4]][[75]]
NULL

[[4]][[76]]
NULL

[[4]][[77]]
NULL

[[4]][[78]]
NULL


[[5]]
[[5]][[1]]
NULL

[[5]][[2]]
NULL

[[5]][[3]]
NULL

[[5]][[4]]
NULL

[[5]][[5]]
NULL

[[5]][[6]]
NULL

[[5]][[7]]
NULL

[[5]][[8]]
NULL

[[5]][[9]]
NULL

[[5]][[10]]
NULL

[[5]][[11]]
NULL

[[5]][[12]]
NULL

[[5]][[13]]
NULL

[[5]][[14]]
NULL

[[5]][[15]]
NULL

[[5]][[16]]
NULL

[[5]][[17]]
NULL

[[5]][[18]]
NULL

[[5]][[19]]
NULL

[[5]][[20]]
NULL

[[5]][[21]]
NULL

[[5]][[22]]
NULL

[[5]][[23]]
NULL

[[5]][[24]]
NULL

[[5]][[25]]
NULL

[[5]][[26]]
NULL

[[5]][[27]]
NULL

[[5]][[28]]
NULL

[[5]][[29]]
NULL

[[5]][[30]]
NULL

[[5]][[31]]
NULL

[[5]][[32]]
NULL

[[5]][[33]]
NULL

[[5]][[34]]
NULL

[[5]][[35]]
NULL

[[5]][[36]]
NULL

[[5]][[37]]
NULL

[[5]][[38]]
NULL

[[5]][[39]]
NULL

[[5]][[40]]
NULL

[[5]][[41]]
NULL

[[5]][[42]]
NULL

[[5]][[43]]
NULL

[[5]][[44]]
NULL

[[5]][[45]]
NULL

[[5]][[46]]
NULL

[[5]][[47]]
NULL

[[5]][[48]]
NULL

[[5]][[49]]
NULL

[[5]][[50]]
NULL

[[5]][[51]]
NULL

[[5]][[52]]
NULL

[[5]][[53]]
NULL

[[5]][[54]]
NULL

[[5]][[55]]
NULL

[[5]][[56]]
NULL

[[5]][[57]]
NULL

[[5]][[58]]
NULL

[[5]][[59]]
NULL

[[5]][[60]]
NULL

[[5]][[61]]
NULL

[[5]][[62]]
NULL

[[5]][[63]]
NULL

[[5]][[64]]
NULL

[[5]][[65]]
NULL

[[5]][[66]]
NULL

[[5]][[67]]
NULL

[[5]][[68]]
NULL

[[5]][[69]]
NULL

[[5]][[70]]
NULL

[[5]][[71]]
NULL

[[5]][[72]]
NULL

[[5]][[73]]
NULL

[[5]][[74]]
NULL

[[5]][[75]]
NULL

[[5]][[76]]
NULL

[[5]][[77]]
NULL

[[5]][[78]]
NULL


[[6]]
[[6]][[1]]
NULL

[[6]][[2]]
NULL

[[6]][[3]]
NULL

[[6]][[4]]
NULL

[[6]][[5]]
NULL

[[6]][[6]]
NULL

[[6]][[7]]
NULL

[[6]][[8]]
NULL

[[6]][[9]]
NULL

[[6]][[10]]
NULL

[[6]][[11]]
NULL

[[6]][[12]]
NULL

[[6]][[13]]
NULL

[[6]][[14]]
NULL

[[6]][[15]]
NULL

[[6]][[16]]
NULL

[[6]][[17]]
NULL

[[6]][[18]]
NULL

[[6]][[19]]
NULL

[[6]][[20]]
NULL

[[6]][[21]]
NULL

[[6]][[22]]
NULL

[[6]][[23]]
NULL

[[6]][[24]]
NULL

[[6]][[25]]
NULL

[[6]][[26]]
NULL

[[6]][[27]]
NULL

[[6]][[28]]
NULL

[[6]][[29]]
NULL

[[6]][[30]]
NULL

[[6]][[31]]
NULL

[[6]][[32]]
NULL

[[6]][[33]]
NULL

[[6]][[34]]
NULL

[[6]][[35]]
NULL

[[6]][[36]]
NULL

[[6]][[37]]
NULL

[[6]][[38]]
NULL

[[6]][[39]]
NULL

[[6]][[40]]
NULL

[[6]][[41]]
NULL

[[6]][[42]]
NULL

[[6]][[43]]
NULL

[[6]][[44]]
NULL

[[6]][[45]]
NULL

[[6]][[46]]
NULL

[[6]][[47]]
NULL

[[6]][[48]]
NULL

[[6]][[49]]
NULL

[[6]][[50]]
NULL

[[6]][[51]]
NULL

[[6]][[52]]
NULL

[[6]][[53]]
NULL

[[6]][[54]]
NULL

[[6]][[55]]
NULL

[[6]][[56]]
NULL

[[6]][[57]]
NULL

[[6]][[58]]
NULL

[[6]][[59]]
NULL

[[6]][[60]]
NULL

[[6]][[61]]
NULL

[[6]][[62]]
NULL

[[6]][[63]]
NULL

[[6]][[64]]
NULL

[[6]][[65]]
NULL

[[6]][[66]]
NULL

[[6]][[67]]
NULL

[[6]][[68]]
NULL

[[6]][[69]]
NULL

[[6]][[70]]
NULL

[[6]][[71]]
NULL

[[6]][[72]]
NULL

[[6]][[73]]
NULL

[[6]][[74]]
NULL

[[6]][[75]]
NULL

[[6]][[76]]
NULL

[[6]][[77]]
NULL

[[6]][[78]]
NULL


[[7]]
[[7]][[1]]
NULL

[[7]][[2]]
NULL

[[7]][[3]]
NULL

[[7]][[4]]
NULL

[[7]][[5]]
NULL

[[7]][[6]]
NULL

[[7]][[7]]
NULL

[[7]][[8]]
NULL

[[7]][[9]]
NULL

[[7]][[10]]
NULL

[[7]][[11]]
NULL

[[7]][[12]]
NULL

[[7]][[13]]
NULL

[[7]][[14]]
NULL

[[7]][[15]]
NULL

[[7]][[16]]
NULL

[[7]][[17]]
NULL

[[7]][[18]]
NULL

[[7]][[19]]
NULL

[[7]][[20]]
NULL

[[7]][[21]]
NULL

[[7]][[22]]
NULL

[[7]][[23]]
NULL

[[7]][[24]]
NULL

[[7]][[25]]
NULL

[[7]][[26]]
NULL

[[7]][[27]]
NULL

[[7]][[28]]
NULL

[[7]][[29]]
NULL

[[7]][[30]]
NULL

[[7]][[31]]
NULL

[[7]][[32]]
NULL

[[7]][[33]]
NULL

[[7]][[34]]
NULL

[[7]][[35]]
NULL

[[7]][[36]]
NULL

[[7]][[37]]
NULL

[[7]][[38]]
NULL

[[7]][[39]]
NULL

[[7]][[40]]
NULL

[[7]][[41]]
NULL

[[7]][[42]]
NULL

[[7]][[43]]
NULL

[[7]][[44]]
NULL

[[7]][[45]]
NULL

[[7]][[46]]
NULL

[[7]][[47]]
NULL

[[7]][[48]]
NULL

[[7]][[49]]
NULL

[[7]][[50]]
NULL

[[7]][[51]]
NULL

[[7]][[52]]
NULL

[[7]][[53]]
NULL

[[7]][[54]]
NULL

[[7]][[55]]
NULL

[[7]][[56]]
NULL

[[7]][[57]]
NULL

[[7]][[58]]
NULL

[[7]][[59]]
NULL

[[7]][[60]]
NULL

[[7]][[61]]
NULL

[[7]][[62]]
NULL

[[7]][[63]]
NULL

[[7]][[64]]
NULL

[[7]][[65]]
NULL

[[7]][[66]]
NULL

[[7]][[67]]
NULL

[[7]][[68]]
NULL

[[7]][[69]]
NULL

[[7]][[70]]
NULL

[[7]][[71]]
NULL

[[7]][[72]]
NULL

[[7]][[73]]
NULL

[[7]][[74]]
NULL

[[7]][[75]]
NULL

[[7]][[76]]
NULL

[[7]][[77]]
NULL

[[7]][[78]]
NULL


[[8]]
[[8]][[1]]
NULL

[[8]][[2]]
NULL

[[8]][[3]]
NULL

[[8]][[4]]
NULL

[[8]][[5]]
NULL

[[8]][[6]]
NULL

[[8]][[7]]
NULL

[[8]][[8]]
NULL

[[8]][[9]]
NULL

[[8]][[10]]
NULL

[[8]][[11]]
NULL

[[8]][[12]]
NULL

[[8]][[13]]
NULL

[[8]][[14]]
NULL

[[8]][[15]]
NULL

[[8]][[16]]
NULL

[[8]][[17]]
NULL

[[8]][[18]]
NULL

[[8]][[19]]
NULL

[[8]][[20]]
NULL

[[8]][[21]]
NULL

[[8]][[22]]
NULL

[[8]][[23]]
NULL

[[8]][[24]]
NULL

[[8]][[25]]
NULL

[[8]][[26]]
NULL

[[8]][[27]]
NULL

[[8]][[28]]
NULL

[[8]][[29]]
NULL

[[8]][[30]]
NULL

[[8]][[31]]
NULL

[[8]][[32]]
NULL

[[8]][[33]]
NULL

[[8]][[34]]
NULL

[[8]][[35]]
NULL

[[8]][[36]]
NULL

[[8]][[37]]
NULL

[[8]][[38]]
NULL

[[8]][[39]]
NULL

[[8]][[40]]
NULL

[[8]][[41]]
NULL

[[8]][[42]]
NULL

[[8]][[43]]
NULL

[[8]][[44]]
NULL

[[8]][[45]]
NULL

[[8]][[46]]
NULL

[[8]][[47]]
NULL

[[8]][[48]]
NULL

[[8]][[49]]
NULL

[[8]][[50]]
NULL

[[8]][[51]]
NULL

[[8]][[52]]
NULL

[[8]][[53]]
NULL

[[8]][[54]]
NULL

[[8]][[55]]
NULL

[[8]][[56]]
NULL

[[8]][[57]]
NULL

[[8]][[58]]
NULL

[[8]][[59]]
NULL

[[8]][[60]]
NULL

[[8]][[61]]
NULL

[[8]][[62]]
NULL

[[8]][[63]]
NULL

[[8]][[64]]
NULL

[[8]][[65]]
NULL

[[8]][[66]]
NULL

[[8]][[67]]
NULL

[[8]][[68]]
NULL

[[8]][[69]]
NULL

[[8]][[70]]
NULL

[[8]][[71]]
NULL

[[8]][[72]]
NULL

[[8]][[73]]
NULL

[[8]][[74]]
NULL

[[8]][[75]]
NULL

[[8]][[76]]
NULL

[[8]][[77]]
NULL

[[8]][[78]]
NULL


[[9]]
[[9]][[1]]
NULL

[[9]][[2]]
NULL

[[9]][[3]]
NULL

[[9]][[4]]
NULL

[[9]][[5]]
NULL

[[9]][[6]]
NULL

[[9]][[7]]
NULL

[[9]][[8]]
NULL

[[9]][[9]]
NULL

[[9]][[10]]
NULL

[[9]][[11]]
NULL

[[9]][[12]]
NULL

[[9]][[13]]
NULL

[[9]][[14]]
NULL

[[9]][[15]]
NULL

[[9]][[16]]
NULL

[[9]][[17]]
NULL

[[9]][[18]]
NULL

[[9]][[19]]
NULL

[[9]][[20]]
NULL

[[9]][[21]]
NULL

[[9]][[22]]
NULL

[[9]][[23]]
NULL

[[9]][[24]]
NULL

[[9]][[25]]
NULL

[[9]][[26]]
NULL

[[9]][[27]]
NULL

[[9]][[28]]
NULL

[[9]][[29]]
NULL

[[9]][[30]]
NULL

[[9]][[31]]
NULL

[[9]][[32]]
NULL

[[9]][[33]]
NULL

[[9]][[34]]
NULL

[[9]][[35]]
NULL

[[9]][[36]]
NULL

[[9]][[37]]
NULL

[[9]][[38]]
NULL

[[9]][[39]]
NULL

[[9]][[40]]
NULL

[[9]][[41]]
NULL

[[9]][[42]]
NULL

[[9]][[43]]
NULL

[[9]][[44]]
NULL

[[9]][[45]]
NULL

[[9]][[46]]
NULL

[[9]][[47]]
NULL

[[9]][[48]]
NULL

[[9]][[49]]
NULL

[[9]][[50]]
NULL

[[9]][[51]]
NULL

[[9]][[52]]
NULL

[[9]][[53]]
NULL

[[9]][[54]]
NULL

[[9]][[55]]
NULL

[[9]][[56]]
NULL

[[9]][[57]]
NULL

[[9]][[58]]
NULL

[[9]][[59]]
NULL

[[9]][[60]]
NULL

[[9]][[61]]
NULL

[[9]][[62]]
NULL

[[9]][[63]]
NULL

[[9]][[64]]
NULL

[[9]][[65]]
NULL

[[9]][[66]]
NULL

[[9]][[67]]
NULL

[[9]][[68]]
NULL

[[9]][[69]]
NULL

[[9]][[70]]
NULL

[[9]][[71]]
NULL

[[9]][[72]]
NULL

[[9]][[73]]
NULL

[[9]][[74]]
NULL

[[9]][[75]]
NULL

[[9]][[76]]
NULL

[[9]][[77]]
NULL

[[9]][[78]]
NULL


[[10]]
[[10]][[1]]
NULL

[[10]][[2]]
NULL

[[10]][[3]]
NULL

[[10]][[4]]
NULL

[[10]][[5]]
NULL

[[10]][[6]]
NULL

[[10]][[7]]
NULL

[[10]][[8]]
NULL

[[10]][[9]]
NULL

[[10]][[10]]
NULL

[[10]][[11]]
NULL

[[10]][[12]]
NULL

[[10]][[13]]
NULL

[[10]][[14]]
NULL

[[10]][[15]]
NULL

[[10]][[16]]
NULL

[[10]][[17]]
NULL

[[10]][[18]]
NULL

[[10]][[19]]
NULL

[[10]][[20]]
NULL

[[10]][[21]]
NULL

[[10]][[22]]
NULL

[[10]][[23]]
NULL

[[10]][[24]]
NULL

[[10]][[25]]
NULL

[[10]][[26]]
NULL

[[10]][[27]]
NULL

[[10]][[28]]
NULL

[[10]][[29]]
NULL

[[10]][[30]]
NULL

[[10]][[31]]
NULL

[[10]][[32]]
NULL

[[10]][[33]]
NULL

[[10]][[34]]
NULL

[[10]][[35]]
NULL

[[10]][[36]]
NULL

[[10]][[37]]
NULL

[[10]][[38]]
NULL

[[10]][[39]]
NULL

[[10]][[40]]
NULL

[[10]][[41]]
NULL

[[10]][[42]]
NULL

[[10]][[43]]
NULL

[[10]][[44]]
NULL

[[10]][[45]]
NULL

[[10]][[46]]
NULL

[[10]][[47]]
NULL

[[10]][[48]]
NULL

[[10]][[49]]
NULL

[[10]][[50]]
NULL

[[10]][[51]]
NULL

[[10]][[52]]
NULL

[[10]][[53]]
NULL

[[10]][[54]]
NULL

[[10]][[55]]
NULL

[[10]][[56]]
NULL

[[10]][[57]]
NULL

[[10]][[58]]
NULL

[[10]][[59]]
NULL

[[10]][[60]]
NULL

[[10]][[61]]
NULL

[[10]][[62]]
NULL

[[10]][[63]]
NULL

[[10]][[64]]
NULL

[[10]][[65]]
NULL

[[10]][[66]]
NULL

[[10]][[67]]
NULL

[[10]][[68]]
NULL

[[10]][[69]]
NULL

[[10]][[70]]
NULL

[[10]][[71]]
NULL

[[10]][[72]]
NULL

[[10]][[73]]
NULL

[[10]][[74]]
NULL

[[10]][[75]]
NULL

[[10]][[76]]
NULL

[[10]][[77]]
NULL

[[10]][[78]]
NULL


[[11]]
[[11]][[1]]
NULL

[[11]][[2]]
NULL

[[11]][[3]]
NULL

[[11]][[4]]
NULL

[[11]][[5]]
NULL

[[11]][[6]]
NULL

[[11]][[7]]
NULL

[[11]][[8]]
NULL

[[11]][[9]]
NULL

[[11]][[10]]
NULL

[[11]][[11]]
NULL

[[11]][[12]]
NULL

[[11]][[13]]
NULL

[[11]][[14]]
NULL

[[11]][[15]]
NULL

[[11]][[16]]
NULL

[[11]][[17]]
NULL

[[11]][[18]]
NULL

[[11]][[19]]
NULL

[[11]][[20]]
NULL

[[11]][[21]]
NULL

[[11]][[22]]
NULL

[[11]][[23]]
NULL

[[11]][[24]]
NULL

[[11]][[25]]
NULL

[[11]][[26]]
NULL

[[11]][[27]]
NULL

[[11]][[28]]
NULL

[[11]][[29]]
NULL

[[11]][[30]]
NULL

[[11]][[31]]
NULL

[[11]][[32]]
NULL

[[11]][[33]]
NULL

[[11]][[34]]
NULL

[[11]][[35]]
NULL

[[11]][[36]]
NULL

[[11]][[37]]
NULL

[[11]][[38]]
NULL

[[11]][[39]]
NULL

[[11]][[40]]
NULL

[[11]][[41]]
NULL

[[11]][[42]]
NULL

[[11]][[43]]
NULL

[[11]][[44]]
NULL

[[11]][[45]]
NULL

[[11]][[46]]
NULL

[[11]][[47]]
NULL

[[11]][[48]]
NULL

[[11]][[49]]
NULL

[[11]][[50]]
NULL

[[11]][[51]]
NULL

[[11]][[52]]
NULL

[[11]][[53]]
NULL

[[11]][[54]]
NULL

[[11]][[55]]
NULL

[[11]][[56]]
NULL

[[11]][[57]]
NULL

[[11]][[58]]
NULL

[[11]][[59]]
NULL

[[11]][[60]]
NULL

[[11]][[61]]
NULL

[[11]][[62]]
NULL

[[11]][[63]]
NULL

[[11]][[64]]
NULL

[[11]][[65]]
NULL

[[11]][[66]]
NULL

[[11]][[67]]
NULL

[[11]][[68]]
NULL

[[11]][[69]]
NULL

[[11]][[70]]
NULL

[[11]][[71]]
NULL

[[11]][[72]]
NULL

[[11]][[73]]
NULL

[[11]][[74]]
NULL

[[11]][[75]]
NULL

[[11]][[76]]
NULL

[[11]][[77]]
NULL

[[11]][[78]]
NULL


[[12]]
[[12]][[1]]
NULL

[[12]][[2]]
NULL

[[12]][[3]]
NULL

[[12]][[4]]
NULL

[[12]][[5]]
NULL

[[12]][[6]]
NULL

[[12]][[7]]
NULL

[[12]][[8]]
NULL

[[12]][[9]]
NULL

[[12]][[10]]
NULL

[[12]][[11]]
NULL

[[12]][[12]]
NULL

[[12]][[13]]
NULL

[[12]][[14]]
NULL

[[12]][[15]]
NULL

[[12]][[16]]
NULL

[[12]][[17]]
NULL

[[12]][[18]]
NULL

[[12]][[19]]
NULL

[[12]][[20]]
NULL

[[12]][[21]]
NULL

[[12]][[22]]
NULL

[[12]][[23]]
NULL

[[12]][[24]]
NULL

[[12]][[25]]
NULL

[[12]][[26]]
NULL

[[12]][[27]]
NULL

[[12]][[28]]
NULL

[[12]][[29]]
NULL

[[12]][[30]]
NULL

[[12]][[31]]
NULL

[[12]][[32]]
NULL

[[12]][[33]]
NULL

[[12]][[34]]
NULL

[[12]][[35]]
NULL

[[12]][[36]]
NULL

[[12]][[37]]
NULL

[[12]][[38]]
NULL

[[12]][[39]]
NULL

[[12]][[40]]
NULL

[[12]][[41]]
NULL

[[12]][[42]]
NULL

[[12]][[43]]
NULL

[[12]][[44]]
NULL

[[12]][[45]]
NULL

[[12]][[46]]
NULL

[[12]][[47]]
NULL

[[12]][[48]]
NULL

[[12]][[49]]
NULL

[[12]][[50]]
NULL

[[12]][[51]]
NULL

[[12]][[52]]
NULL

[[12]][[53]]
NULL

[[12]][[54]]
NULL

[[12]][[55]]
NULL

[[12]][[56]]
NULL

[[12]][[57]]
NULL

[[12]][[58]]
NULL

[[12]][[59]]
NULL

[[12]][[60]]
NULL

[[12]][[61]]
NULL

[[12]][[62]]
NULL

[[12]][[63]]
NULL

[[12]][[64]]
NULL

[[12]][[65]]
NULL

[[12]][[66]]
NULL

[[12]][[67]]
NULL

[[12]][[68]]
NULL

[[12]][[69]]
NULL

[[12]][[70]]
NULL

[[12]][[71]]
NULL

[[12]][[72]]
NULL

[[12]][[73]]
NULL

[[12]][[74]]
NULL

[[12]][[75]]
NULL

[[12]][[76]]
NULL

[[12]][[77]]
NULL

[[12]][[78]]
NULL

LS0tDQp0aXRsZTogIkZ1bmN0aW9ucyB0byBHZW5lcmF0ZSBGaWd1cmUgMSINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBpbmZvX3ByaW50OiBwYWdlZA0KICBodG1sX25vdGVib29rOiBkZWZhdWx0DQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0KICBwaW5mb19kb2N1bWVudDogZGVmYXVsdA0KICB3b3JkX2RvY3VtZW50OiBkZWZhdWx0DQotLS0NCg0KYGBge3J9DQppbmZvIDwtIHJlYWQuY3N2KCIuLi9kYXRhL3RyYWluX3NldC9sYWJlbC5jc3YiKQ0KbG9hZCgiLi4vb3V0cHV0L2ZpZHVjaWFsX3B0X2xpc3QuUmRhdGEiKQ0KbGlicmFyeShyZWFkeGwpDQojIEEgZnVuY3Rpb24gdG8gcGxvdCBoaXN0b2dyYW0gb2YgZGlzdHJpYnV0aW9uIG9mIHBhaXJ3aXNlIGRpc3RhbmNlIGZvciBlYWNoIGVtb3Rpb24NCiMgaW5wdXQ6IGVtb3Rpb24gaW5kZXgsIGZpcnN0IHBvaW50LCBzZWNvbmQgcG9pbnQsIHZlcnRpY2FsIG9yIGhvcml6b250YWwgZGlzdGFuY2UNCiMgb3V0cHV0OiBoaXN0b2dyYW0gb2YgZGlzdGFuY2UgZGlzdHJpYnV0aW9uDQpkaXN0X2hpc3RvZ3JhbV9ieV9lbW90aW9uIDwtIGZ1bmN0aW9uKGVtb3Rpb25faWR4LCBwdDEsIHB0MiwgdmVydGljYWwgPSBUKXsNCiAgICBpbmRpY2VzIDwtIGluZm9baW5mbyRlbW90aW9uX2lkeCA9PSBlbW90aW9uX2lkeCwgJ0luZGV4J10NCiAgICBlbW90aW9uIDwtIGFzLmNoYXJhY3RlcihpbmZvW2luZm8kZW1vdGlvbl9pZHggPT0gZW1vdGlvbl9pZHgsICdlbW90aW9uX2NhdCddKVsxXQ0KICAgIHZlci5kaXN0IDwtIGZ1bmN0aW9uKGlkeCl7DQogICAgICAgIGlmKHZlcnRpY2FsKXsNCiAgICAgICAgdmVyLmxvYyA8LSBmaWR1Y2lhbF9wdF9saXN0W1tpZHhdXVssMl0NCiAgICAgICAgfQ0KICAgICAgICBlbHNlew0KICAgICAgICB2ZXIubG9jIDwtIGZpZHVjaWFsX3B0X2xpc3RbW2lkeF1dWywxXSANCiAgICAgICAgfQ0KICAgICAgICBwYWlyd2lzZV9kaXN0IDwtIGFzLm1hdHJpeChkaXN0KHZlci5sb2MpKQ0KICAgICAgICB2ZXIuZGlzdCA8LSBwYWlyd2lzZV9kaXN0W3B0MSxwdDJdDQogICAgcmV0dXJuKHZlci5kaXN0KQ0KfQ0KICAgIGRpc3RfZGlzdHJpYnV0aW9uIDwtIHNhcHBseShpbmRpY2VzLCB2ZXIuZGlzdCkNCiAgICAjanBlZyhwYXN0ZShjKCcuLi9vdXRwdXQvaGlzdCcsIGVtb3Rpb25faWR4LCJfIiwgcHQxLCAiXyIsIHB0MiwgJy5qcGcnKSwgY29sbGFwc2UgPSAnJyksDQogICAgI3dpZHRoID0gNTAwLCBoZWlnaHQgPSAzNzUpDQogICAgaGlzdChkaXN0X2Rpc3RyaWJ1dGlvbiwgeGxhYiA9ICJkaXN0YW5jZSIsIA0KICAgICAgICAgbWFpbiA9IHBhc3RlKGMoZW1vdGlvbiwgImRpc3RhbmNlIGJldHdlZW4iLCBwdDEsICJhbmQiLCBwdDIpLGNvbGxhcHNlID0gIiAiKSkgDQogICAgYWJsaW5lKHYgPSBtZWFuKGRpc3RfZGlzdHJpYnV0aW9uKSkNCiAgICAjZGV2Lm9mZigpDQp9DQoNCiMgQSBmdW5jdGlvbiB0byBnZW5lcmFsaXplICJkaXN0X2hpc3RvZ3JhbV9ieV9lbW90aW9uIiB0byBhbGwgZW1vdGlvbnMgDQpkaXN0X2hpc3RvZ3JhbSA8LSBmdW5jdGlvbihwdDEsIHB0MiwgdmVydGljYWwgPSBUKXsNCiAgbGFwcGx5KDE6MjIsIGRpc3RfaGlzdG9ncmFtX2J5X2Vtb3Rpb24sIHB0MSwgcHQyLCB2ZXJ0aWNhbCkNCn0NCg0KI2V4YW1wbGVzDQpkaXN0X2hpc3RvZ3JhbSg1MCw1MikNCmRpc3RfaGlzdG9ncmFtKDEsMjEpDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KEVCSW1hZ2UpDQojIGEgZnVuY3Rpb24gZGlzcGxheSBmaWR1Y2lhbCBwb2ludHMgb24gaW1hZ2VzDQojIGlucHV0OiBpZGVudGl0eSBpbmRleA0KIyBvdXRwdXQ6IGFsbCBpbWFnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZGVudGl0eSB3aXRoIGZpZHVjaWFsIHBvaW50cyBtYXJrZWQNCmRpc3BsYXlfZmlkX3B0IDwtIGZ1bmN0aW9uKGlkZW50aXR5KXsNCiAgICBpbmRpY2VzIDwtIGluZm9baW5mbyRpZGVudGl0eSA9PSBpZGVudGl0eSwgJ0luZGV4J10NCiAgICBlbW90aW9ucyA8LSBhcy5jaGFyYWN0ZXIoaW5mb1tpbmZvJGlkZW50aXR5ID09IGlkZW50aXR5LCAnZW1vdGlvbl9jYXQnXSkNCiAgICBpbWFnZS5wYXRoX3N1YiA8LSBwYXN0ZTAodHJhaW5faW1hZ2VfZGlyLCBzcHJpbnRmKCIlMDRkIiwgaW5kaWNlcyksICIuanBnIikNCiAgICBJbWFnZV9saXN0X3N1YiA8LSBsYXBwbHkoaW1hZ2UucGF0aF9zdWIsIEVCSW1hZ2U6OnJlYWRJbWFnZSkNCiAgICBmaWR1Y2lhbF9wdF9saXN0X3N1YiA8LSBmaWR1Y2lhbF9wdF9saXN0W2luZGljZXNdDQoNCiAgICBkaXNwbGF5X3NpbmdsZSA8LSBmdW5jdGlvbihqKXsNCiAgICAgICAgI2pwZWcocGFzdGUoYygnLi4vb3V0cHV0LycsIGlkZW50aXR5LCdfJywgaiwgJy5qcGcnKSwgY29sbGFwc2UgPSAnJyksIHdpZHRoID0gNTAwLCBoZWlnaHQgPSAzNzUpDQogICAgICAgIGRpc3BsYXkoSW1hZ2UoSW1hZ2VfbGlzdF9zdWJbW2pdXSwgY29sb3Jtb2RlID0gJ0NvbG9yJyksIG1ldGhvZD0icmFzdGVyIikNCiAgICAgICAgdGV4dCh4ID0gMTcwLCB5ID0gNTAsIGxhYmVsID0gZW1vdGlvbnNbal0sIGNleCA9IDEuNSkNCiAgICAgICAgYWRkX3BvaW50IDwtIGZ1bmN0aW9uKG4pe3RleHQoeCA9IGZpZHVjaWFsX3B0X2xpc3Rfc3ViW1tqXV1bbiwxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGZpZHVjaWFsX3B0X2xpc3Rfc3ViW1tqXV1bbiwyXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBhcy5jaGFyYWN0ZXIobiksIGNvbCA9ICJ3aGl0ZSIsIGNleCA9IDAuOCl9DQogICAgICAgIGxhcHBseSgxOjc4LGFkZF9wb2ludCkNCiAgICAgICAgI2Rldi5vZmYoKSANCn0NCg0KICAgIGxhcHBseSgxOmxlbmd0aChpbmRpY2VzKSwgZGlzcGxheV9zaW5nbGUpIA0KfQ0KDQpkaXNwbGF5X2ZpZF9wdCgxMTApDQoNCmBgYA0KDQo=